// 高精度除法

#include <iostream>
#include <cstring>

using namespace std;

int a[101];
int b[101];
int c[101];

//比较a和b的大小关系，若a>b则为1，若a<b则为-1，若a=b则为0
int compare(int a[],int b[])
{
    int i;
    if (a[0]>b[0])
        return 1;  //若a的位数大于b，则a>b
    if (a[0]<b[0])
        return -1;  //若a的位数小于b，则a<b

    //从高位到低位依次比较，找出大小关系
    for(i=a[0];i>0;i--)
    {
        if(a[i]>b[i])
            return 1;

        if (a[i]<b[i])
            return -1;
    }

    return 0;
}

//a数组既做被除数，又作为储存余数
void substraction(int a[],int b[])
{
    if(compare(a,b) == 0)
    {
        a[0]=0;
        return;
    }

    if(compare(a,b) == 1)
    {
        for(int i=1;i<=a[0];i++)
        {
            //若不够减向上一位借一位
            if(a[i] < b[i])
            {
                a[i+1]--;
                a[i]+=10;
            }
            if(a[i] >= b[i])
                a[i]-=b[i];
        }

        while((a[a[0]]==0) && (a[0]>0))
            a[0]--;
    }
}

//复制p数组到q数组从det开始的地方
void numcpy(int p[],int q[],int det)
{
    //将数组右移，使两个数组右端对齐，形参q数组储存右移后的结果
    for(int i=1;i<=p[0];i++)
        q[i+det-1]=p[i];

    q[0] = p[0]+det-1;
}
void division(int a[],int b[],int c[])
{
    int tmp[101];
    c[0] = a[0]-b[0]+1;

    for(int i=c[0]; i>0; i--)
    {
        memset(tmp,0,sizeof(tmp)); //tmp数组清零
        numcpy(b,tmp,i);           //将除数b右移后复制给tmp数组，注意用i控制除数位数

        //减法模拟除法，并计数
        while(compare(a,tmp) >= 0)
        {
            c[i]++;
            substraction(a,tmp);
        }
    }

    // 控制最高位的0
    while((c[c[0]]==0) && (c[0]>0))
        c[0]--;
}
int main()//主程序
{
    string aStr, bStr;
    cin >> aStr >> bStr;  //读入字符串

    //a[0]储存字符串的长度
    a[0] = aStr.length();
    for(int i=1; i<=a[0]; i++)
        a[i] = aStr[a[0]-i]-'0'; //将字符串转化为数组a，倒序储存模拟竖式计算

    //b[0]储存字符串的长度
    b[0] = bStr.length();
    for(int i=1; i<=b[0]; i++)
        b[i] = bStr[b[0]-i]-'0'; //将字符串转化为数组b，倒序储存模拟竖式计算

    // a÷b = c
    division(a,b, c);

    cout << "商:";
    if(c[0] == 0)
        cout << "0";
    else
    {
        for (int i=c[0];i>0;i--)
            cout << c[i];
    }
    cout<<endl;

    cout << "余:";
    if(a[0] == 0)
        cout<<"0";
    else
    {
        for (int i=a[0];i>0;i--)
            cout<<a[i];
    }
    cout<<endl;

    return 0;
}
